import com.wn.domain.Person;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/**
 * @author yellow Docter
 * @date 2022 -10-28
 * @desc  中止操作
方法          							描述
anyMatch(Predicate p)	检查是否至少匹配一个元素
findFirst()        					返回第一个元素
count()        						返回流中元素总数
max(Comparator c)   	   返回流中最大值
forEach(Consumer c) 	  内部迭代(使用 Collection 接口需要用户去做迭代，称为外部迭代。相反，Stream API 使用内部迭代——它帮你把迭代做了)
 */
public class Demo04 {

    List<Person> persons = Arrays.asList(
            new Person("马云", 48, 2000d),
            new Person("马化腾", 50, 3000d),
            new Person("雷军", 46, 4000d),
            new Person("刘强东", 47, 5000d),
            new Person("张朝阳", 50, 6000d),
            new Person("张朝阳", 50, 6000d),
            new Person("张一鸣", 50, 7000d),
            new Person("张一鸣", 50, 7000d)
    );

    @Test
    public void demo01(){

        //判断是否符合 要求
        boolean b = persons.stream()
                .distinct()
                .anyMatch(p -> p.getSalary() > 6000);

        System.out.println("b = " + b);

        //获取第一个
//        Optional<Person> first = persons.stream()
//                .distinct()
//                .findFirst();
//
//        Person person = first.get();
//        System.out.println("person = " + person);

        long count = persons.stream().distinct().count();
        System.out.println("count = " + count);


        Person person = persons.stream().distinct().max((o1, o2) -> (int) (o1.getSalary() - o2.getSalary())).get();
        System.out.println("person = " + person);


    }

    @Test
    public void demo02(){



    }

}
